package com.dkd.music.domain;

import com.dkd.common.annotation.Excel;
import com.dkd.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;

/**
 * 专辑对象 t_album
 * 
 * @author grz
 * @date 2025-10-25
 */
public class Album extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 专辑ID */
    private Long albumId;

    /** 专辑名 */
    @Excel(name = "专辑名")
    private String name;

    /** 所属歌手ID */
    private Long artistId;

    /** 所属歌手名 (冗余字段) */
    @Excel(name = "所属歌手名 (冗余字段)")
    private String artistName;

    /** 专辑封面URL */
    @Excel(name = "专辑封面URL")
    private String coverUrl;

    /** 发行日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发行日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date releaseDate;

    /** 专辑描述 */
    @Excel(name = "专辑描述")
    private String description;

    public void setAlbumId(Long albumId) 
    {
        this.albumId = albumId;
    }

    public Long getAlbumId() 
    {
        return albumId;
    }

    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public void setArtistId(Long artistId) 
    {
        this.artistId = artistId;
    }

    public Long getArtistId() 
    {
        return artistId;
    }

    public void setArtistName(String artistName) 
    {
        this.artistName = artistName;
    }

    public String getArtistName() 
    {
        return artistName;
    }

    public void setCoverUrl(String coverUrl) 
    {
        this.coverUrl = coverUrl;
    }

    public String getCoverUrl() 
    {
        return coverUrl;
    }

    public void setReleaseDate(Date releaseDate) 
    {
        this.releaseDate = releaseDate;
    }

    public Date getReleaseDate() 
    {
        return releaseDate;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("albumId", getAlbumId())
            .append("name", getName())
            .append("artistId", getArtistId())
            .append("artistName", getArtistName())
            .append("coverUrl", getCoverUrl())
            .append("releaseDate", getReleaseDate())
            .append("description", getDescription())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
